﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AudiPyme.DAL;

namespace AudiPyme.UI
{
    public partial class InicioSesion : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
        {
            try
            {
                bool autenticado = false;
                autenticado = LoginCorrecto(LoginSesion.UserName, LoginSesion.Password);
                e.Authenticated = autenticado;
                if (autenticado)
                {
                    Session["nombreUsuario"] = LoginSesion.UserName;
                    if (esAdministrador(LoginSesion.UserName))
                    {
                        Response.Redirect("AdTablas.aspx");
                    }
                    else
                    {
                        String NombreUsuario = (String)Session["nombreUsuario"];
                        int IdEmpresa = UsuariosFactory.EmpresaUsuario(NombreUsuario);
                        //Si el usuario ya creo la empresa, se redirige a empresa principal
                        if (IdEmpresa != 0)
                        {
                            Response.Redirect("EmpresaPrincipal.aspx");
                        }
                        //Si no, automáticamente se dirige a Crear una Empresa
                        else
                        {
                            Response.Redirect("EmpresaCrear.aspx");
                        }
                    }
                }
            }
            catch (Exception e1)
            {
                e1.ToString();
                LblRegistrarse.Text = "Error al iniciar la sesión";
            }
        }
        private bool esAdministrador(string Usuario)
        {
            if (LoginSesion.UserName == "admin")
                return true;
            else
                return false;
        }

        private bool LoginCorrecto(string Usuario, string Contrasena)
        {
            bool estaNombre = false;
            bool estaPassword = false;
            ModeloContainer modelo = new ModeloContainer();
            IQueryable<String> nombre = from usu in modelo.UsuariosEstablecer
                                        where usu.Nombre.Equals(Usuario)
                                        select usu.Nombre;
            if (nombre.Count() == 0)
                LoginSesion.FailureText = "No se encontró el nombre de usuario";
            else
            {
                String NombreUsuario = nombre.First();
                estaNombre = true;
                IQueryable<String> contrasenia = from usu in modelo.UsuariosEstablecer
                                                 where usu.Nombre.Equals(NombreUsuario) && usu.Password.Equals(Contrasena)
                                                 select usu.Password;
                if (contrasenia.Count() == 0)
                    LoginSesion.FailureText = "El nombre de usuario y contraseña no coinciden.Inténtelo de nuevo";
                else
                    estaPassword = true;
            }
            if (estaNombre && estaPassword)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        protected void LblRegistrarse_Click(object sender, EventArgs e)
        {
            Response.Redirect("Registro.aspx");
        }
    }
}